package com.core.ingenium.model;

import java.io.Serializable;

import java.math.BigDecimal;

import java.sql.Timestamp;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;


@Entity
@NamedQueries( { 
                  @NamedQuery(name = "EstudiantePlantilla.findAll", query = "select o from EstudiantePlantilla o"),
                  @NamedQuery(name = "EstudiantePlantilla.findByEstudiante", query = "select o from EstudiantePlantilla o where o.estudiante.identificacion = :pid")
                 })
@Table(name = "\"estudianteplantilla\"")
public class EstudiantePlantilla implements Serializable {
    @Column(name = "cuatrimestre")
    private int cuatrimestre;
    @Column(name = "fechaAsignada")
    private Timestamp fechaAsignada;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private int id;
    @Column(name = "pendiente")
    private boolean pendiente;
    @Column(name = "resultado")
    private BigDecimal resultado;
    @OneToMany(mappedBy = "estudiantePlantilla")
    private List<ResultadoSeccion> lstResultadoSeccion;

    @OneToOne
    @JoinColumn(name = "estudiante")
    private Estudiante estudiante;
    
    @ManyToOne
    @JoinColumn(name = "plantilla")
    private Plantilla plantilla;
    public EstudiantePlantilla() {
    }

    public EstudiantePlantilla(int cuatrimestre, Estudiante estudiante, Timestamp fechaAsignada, int id,
                               boolean pendiente, Plantilla plantilla, BigDecimal resultado) {
        this.cuatrimestre = cuatrimestre;
        this.estudiante = estudiante;
        this.fechaAsignada = fechaAsignada;
        this.id = id;
        this.pendiente = pendiente;
        this.plantilla = plantilla;
        this.resultado = resultado;
    }

    public int getCuatrimestre() {
        return cuatrimestre;
    }

    public void setCuatrimestre(int cuatrimestre) {
        this.cuatrimestre = cuatrimestre;
    }


    public Timestamp getFechaAsignada() {
        return fechaAsignada;
    }

    public void setFechaAsignada(Timestamp fechaAsignada) {
        this.fechaAsignada = fechaAsignada;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public boolean getPendiente() {
        return pendiente;
    }

    public void setPendiente(boolean pendiente) {
        this.pendiente = pendiente;
    }


    public BigDecimal getResultado() {
        return resultado;
    }

    public void setResultado(BigDecimal resultado) {
        this.resultado = resultado;
    }

    public void setEstudiante(Estudiante estudiante) {
        this.estudiante = estudiante;
    }

    public void setPlantilla(Plantilla plantilla) {
        this.plantilla = plantilla;
    }

    public List<ResultadoSeccion> getLstResultadoSeccion() {
        return lstResultadoSeccion;
    }

    public void setLstResultadoSeccion(List<ResultadoSeccion> lstResultadoSeccion) {
        this.lstResultadoSeccion = lstResultadoSeccion;
    }

    public ResultadoSeccion addResultadoSeccion(ResultadoSeccion resultadoSeccion) {
        getLstResultadoSeccion().add(resultadoSeccion);
        resultadoSeccion.setEstudiantePlantilla(this);
        return resultadoSeccion;
    }

    public ResultadoSeccion removeResultadoSeccion(ResultadoSeccion resultadoSeccion) {
        getLstResultadoSeccion().remove(resultadoSeccion);
        resultadoSeccion.setEstudiantePlantilla(null);
        return resultadoSeccion;
    }

    public Estudiante getEstudiante() {
        return estudiante;
    }

    public Plantilla getPlantilla() {
        return plantilla;
    }
}
